package com.sky.mapper;

import com.sky.entity.AddressBook;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface AddressBookMapper {
  /**
   * 插入一个新的地址簿条目。
   */
  @Insert("insert into address_book (user_id, consignee, sex, phone, province_code, province_name, city_code, city_name, district_code, district_name, detail, label, is_default) VALUES " +
      "(#{userId}, #{consignee}, #{sex}, #{phone}, #{provinceCode}, #{provinceName}, #{cityCode}, #{cityName}, #{districtCode}, #{districtName}, #{detail}, #{label}, #{isDefault})")
  void insert(AddressBook addressBook);
  
  /**
   * 查询指定用户ID的所有地址簿条目。
   *
   * @param userId 用户的唯一标识符
   * @return 与给定用户ID关联的地址簿条目的列表
   */
  @Select("select * from address_book where user_id = #{userId}")
  List<AddressBook> list(Long userId);
  
  
  /**
   * 查询指定用户ID的默认地址簿条目。
   */
  @Select("select * from address_book where user_id = #{userId} and is_default = #{isDefault}")
  AddressBook findDefaultAddress(AddressBook addressBook);
  
  /**
   * 将指定的地址簿条目设置为默认地址。
   */
  @Update("update address_book " +
          "set is_default = case when id = #{id} then 1 else 0 end " +
          "where user_id = #{userId}")
  void setDefaultAddress(AddressBook addressBook);
  
  /**
   * 更新地址簿条目信息。
   * @param addressBook 包含更新信息的AddressBook对象
   */
  void update(AddressBook addressBook);
  
  
  /**
   * 根据id查找
   * @param id
   */
  @Select("select * from address_book where id = #{id}")
  AddressBook findById(Long id);
  
  
  /**
   * 根据给定的ID从地址簿中删除一个条目。
   */
  @Delete("delete from address_book where id = #{id}")
  void delById(Long id);
}
